home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / GIMP 2.6.8 / gimp-2.6.8-i686-setup.exe / {app} / share / gimp / 2.0 / scripts / alien-glow-button.scm < prev    next >
Text File  |  2009-12-15  |  6KB  |  169 lines

  1. ; GIMP - The GNU Image Manipulation Program
  2. ; Copyright (C) 1995 Spencer Kimball and Peter Mattis
  3. ;
  4. ; Alien Glow themed button
  5. ; Copyright (c) 1997 Adrian Likins
  6. ; aklikins@eos.ncsu.edu
  7. ;
  8. ; based on code from Frederico Mena Quintero (Quartic)
  9. ; federico@nuclecu.unam.mx
  10. ;
  11. ; This program is free software; you can redistribute it and/or modify
  12. ; it under the terms of the GNU General Public License as published by
  13. ; the Free Software Foundation; either version 2 of the License, or
  14. ; (at your option) any later version.
  15. ;
  16. ; This program is distributed in the hope that it will be useful,
  17. ; but WITHOUT ANY WARRANTY; without even the implied warranty of
  18. ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  19. ; GNU General Public License for more details.
  20. ;
  21. ; You should have received a copy of the GNU General Public License
  22. ; along with this program; if not, write to the Free Software
  23. ; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  24.  
  25.  
  26. (define (script-fu-alien-glow-button text
  27.                                      font
  28.                                      size
  29.                                      text-color
  30.                                      glow-color
  31.                                      bg-color
  32.                                      padding
  33.                                      glow-radius
  34.                                      flatten)
  35.  
  36.   (define (text-width extents)
  37.     (car extents))
  38.  
  39.   (define (text-height extents)
  40.     (cadr extents))
  41.  
  42.   (define (text-ascent extents)
  43.     (caddr extents))
  44.  
  45.   (define (text-descent extents)
  46.     (cadr (cddr extents)))
  47.  
  48.   (define (blend-bumpmap img
  49.                          drawable
  50.                          x1
  51.                          y1
  52.                          x2
  53.                          y2)
  54.     (gimp-edit-blend drawable FG-BG-RGB-MODE DARKEN-ONLY-MODE
  55.                      GRADIENT-LINEAR 100 0 REPEAT-NONE FALSE
  56.                      FALSE 0 0 TRUE
  57.                      x1 y1 x2 y2)
  58.   )
  59.  
  60.   (let* (
  61.         (text-extents (gimp-text-get-extents-fontname text
  62.                                                       size
  63.                                                       PIXELS
  64.                                                       font))
  65.         (ascent (text-ascent text-extents))
  66.         (descent (text-descent text-extents))
  67.  
  68.         (img-width (+ (* 2  padding)
  69.                       (text-width text-extents)))
  70.         (img-height (+ (* 2 padding)
  71.                        (+ ascent descent)))
  72.         (layer-height img-height)
  73.         (layer-width img-width)
  74.         (img-width (+ img-width glow-radius))
  75.         (img-height (+ img-height glow-radius))
  76.         (img (car (gimp-image-new img-width img-height RGB)))
  77.         (bg-layer (car (gimp-layer-new img
  78.                                        img-width img-height RGBA-IMAGE
  79.                                        "Background" 100 NORMAL-MODE)))
  80.         (glow-layer (car (gimp-layer-new img
  81.                                          img-width img-height RGBA-IMAGE
  82.                                          "Glow" 100 NORMAL-MODE)))
  83.         (button-layer (car (gimp-layer-new img
  84.                                            layer-width layer-height RGBA-IMAGE
  85.                                            "Button" 100 NORMAL-MODE)))
  86.         )
  87.  
  88.     (gimp-context-push)
  89.  
  90.     (gimp-image-undo-disable img)
  91.  
  92.     ; Create bumpmap layer
  93.  
  94.     (gimp-image-add-layer img bg-layer -1)
  95.     (gimp-context-set-foreground '(0 0 0))
  96.     (gimp-context-set-background bg-color)
  97.     (gimp-edit-fill bg-layer BACKGROUND-FILL)
  98.     (gimp-image-add-layer img glow-layer -1)
  99.  
  100.     ; Create text layer
  101.  
  102.     (gimp-image-add-layer img button-layer -1)
  103.     (gimp-layer-set-offsets button-layer (/ glow-radius 2) (/ glow-radius 2))
  104.     (gimp-selection-none img)
  105.     (gimp-rect-select img 0 0 img-width img-height CHANNEL-OP-REPLACE FALSE 0)
  106.     (gimp-context-set-foreground '(100 100 100))
  107.     (gimp-context-set-background '(0 0 0))
  108.  
  109.     (gimp-edit-blend button-layer FG-BG-RGB-MODE NORMAL-MODE
  110.                      GRADIENT-SHAPEBURST-ANGULAR 100 0 REPEAT-NONE FALSE
  111.                      FALSE 0 0 TRUE
  112.                      0 0 img-height img-width)
  113.  
  114.     (gimp-edit-clear glow-layer)
  115.  
  116.     (gimp-rect-select img
  117.                       (/ glow-radius 4)
  118.                       (/ glow-radius 4)
  119.                       (- img-width (/ glow-radius 2))
  120.                       (- img-height (/ glow-radius 2))
  121.                       CHANNEL-OP-REPLACE FALSE 0 )
  122.  
  123.     (gimp-context-set-foreground glow-color)
  124.     (gimp-edit-fill glow-layer FOREGROUND-FILL)
  125.     (gimp-selection-none img)
  126.     (plug-in-gauss-rle RUN-NONINTERACTIVE img glow-layer glow-radius TRUE TRUE)
  127.     (gimp-context-set-foreground text-color)
  128.     (let (
  129.          (textl (car (gimp-text-fontname
  130.                       img -1 0 0 text 0 TRUE size PIXELS font)))
  131.          )
  132.       (gimp-layer-set-offsets textl
  133.                               (+  padding (/ glow-radius 2))
  134.                               (+ (+ padding descent) (/ glow-radius 2)))
  135.     )
  136.     ; Done
  137.     (gimp-selection-none img)
  138.     (gimp-image-undo-enable img)
  139.     (if (= flatten TRUE)
  140.         (gimp-image-flatten img)
  141.     )
  142.  
  143.     (gimp-display-new img)
  144.  
  145.     (gimp-context-pop)
  146.   )
  147. )
  148.  
  149. (script-fu-register "script-fu-alien-glow-button"
  150.   _"B_utton..."
  151.   _"Create a button graphic with an eerie glow for web pages"
  152.   "Adrian Likins"
  153.   "Adrian Likins"
  154.   "July 1997"
  155.   ""
  156.   SF-STRING     _"Text"               "Hello world!"
  157.   SF-FONT       _"Font"               "Sans Bold"
  158.   SF-ADJUSTMENT _"Font size (pixels)" '(22 2 100 1 1 0 1)
  159.   SF-COLOR      _"Text color"         "black"
  160.   SF-COLOR      _"Glow color"         '(63 252 0)
  161.   SF-COLOR      _"Background color"   "black"
  162.   SF-ADJUSTMENT _"Padding"            '(6 1 100 1 10 0 1)
  163.   SF-ADJUSTMENT _"Glow radius"        '(10 1 200 1 10 0 1)
  164.   SF-TOGGLE     _"Flatten image"      TRUE
  165. )
  166.  
  167. (script-fu-menu-register "script-fu-alien-glow-button"
  168.                          "<Image>/File/Create/Web Page Themes/Alien Glow")
  169.